#include<bits/stdc++.h>
using namespace std;
const int NN=1e6+4;
bool vis[NN],flag[NN];
int x[NN],y[NN],o[NN];
int main()
{
	for(int i=2;i<=100000;i++)
		if(!vis[i])
		{
			if(i%20==3||i<=10)
				flag[i]=true;
			for(long long j=1ll*i*i;j<=1000000;j+=i)
				vis[j]=true;
		}
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,m;
		scanf("%d%d",&n,&m);
		for(int i=1;i<=n;i++)
			scanf("%d%d",&x[i],&y[i]);
		for(int i=1;i<=n;i++)
			scanf("%d",&o[i]);
		long long res=0;
		for(int i=1;i<=n;i++)
			for(int j=i+1;j<=n;j++)
				for(int k=j+1;k<=n;k++)
				{
					int a[3]={abs(x[i]-x[j])+abs(y[i]-y[j]),abs(x[i]-x[k])+abs(y[i]-y[k]),abs(x[j]-x[k])+abs(y[j]-y[k])};
					sort(a+1,a+3);
					if(vis[a[1]])
						res+=o[i]+o[j]+o[k];
				}
		printf("%lld\n",res);
	}
	return 0;
}
